package protobuf {
	import com.netease.protobuf.*;
	use namespace com.netease.protobuf.used_by_generated_code;
	import com.netease.protobuf.fieldDescriptors.*;
	import flash.utils.Endian;
	import flash.utils.IDataInput;
	import flash.utils.IDataOutput;
	import flash.utils.IExternalizable;
	import flash.errors.IOError;
	import flash.utils.ByteArray;
	// @@protoc_insertion_point(imports)

	// @@protoc_insertion_point(class_metadata)
	public dynamic final class MATCH_RECORD_MESSAGE extends com.netease.protobuf.Message {
		/**
		 *  @private
		 */
		public static const TABLE_TYPE:FieldDescriptor$TYPE_UINT32 = new FieldDescriptor$TYPE_UINT32("protobuf.MATCH_RECORD_MESSAGE.table_type", "tableType", (2 << 3) | com.netease.protobuf.WireType.VARINT);

		public var tableType:uint;

		/**
		 *  @private
		 */
		public static const NET_WIN_LOSS:FieldDescriptor$TYPE_DOUBLE = new FieldDescriptor$TYPE_DOUBLE("protobuf.MATCH_RECORD_MESSAGE.net_win_loss", "netWinLoss", (3 << 3) | com.netease.protobuf.WireType.FIXED_64_BIT);

		public var netWinLoss:Number;

		/**
		 *  @private
		 */
		public static const RAKE:FieldDescriptor$TYPE_DOUBLE = new FieldDescriptor$TYPE_DOUBLE("protobuf.MATCH_RECORD_MESSAGE.rake", "rake", (4 << 3) | com.netease.protobuf.WireType.FIXED_64_BIT);

		private var rake$field:Number;

		private var hasField$0:uint = 0;

		public function clearRake():void {
			hasField$0 &= 0xfffffffe;
			rake$field = new Number();
		}

		public function get hasRake():Boolean {
			return (hasField$0 & 0x1) != 0;
		}

		public function set rake(value:Number):void {
			hasField$0 |= 0x1;
			rake$field = value;
		}

		public function get rake():Number {
			return rake$field;
		}

		/**
		 *  @private
		 */
		public static const MIN_BLINDS:FieldDescriptor$TYPE_DOUBLE = new FieldDescriptor$TYPE_DOUBLE("protobuf.MATCH_RECORD_MESSAGE.min_blinds", "minBlinds", (5 << 3) | com.netease.protobuf.WireType.FIXED_64_BIT);

		private var min_blinds$field:Number;

		public function clearMinBlinds():void {
			hasField$0 &= 0xfffffffd;
			min_blinds$field = new Number();
		}

		public function get hasMinBlinds():Boolean {
			return (hasField$0 & 0x2) != 0;
		}

		public function set minBlinds(value:Number):void {
			hasField$0 |= 0x2;
			min_blinds$field = value;
		}

		public function get minBlinds():Number {
			return min_blinds$field;
		}

		/**
		 *  @private
		 */
		public static const MAX_BLINDS:FieldDescriptor$TYPE_DOUBLE = new FieldDescriptor$TYPE_DOUBLE("protobuf.MATCH_RECORD_MESSAGE.max_blinds", "maxBlinds", (6 << 3) | com.netease.protobuf.WireType.FIXED_64_BIT);

		private var max_blinds$field:Number;

		public function clearMaxBlinds():void {
			hasField$0 &= 0xfffffffb;
			max_blinds$field = new Number();
		}

		public function get hasMaxBlinds():Boolean {
			return (hasField$0 & 0x4) != 0;
		}

		public function set maxBlinds(value:Number):void {
			hasField$0 |= 0x4;
			max_blinds$field = value;
		}

		public function get maxBlinds():Number {
			return max_blinds$field;
		}

		/**
		 *  @private
		 */
		public static const TIME:FieldDescriptor$TYPE_UINT32 = new FieldDescriptor$TYPE_UINT32("protobuf.MATCH_RECORD_MESSAGE.time", "time", (7 << 3) | com.netease.protobuf.WireType.VARINT);

		public var time:uint;

		/**
		 *  @private
		 */
		public static const PIPE_ID:FieldDescriptor$TYPE_BYTES = new FieldDescriptor$TYPE_BYTES("protobuf.MATCH_RECORD_MESSAGE.pipe_id", "pipeId", (8 << 3) | com.netease.protobuf.WireType.LENGTH_DELIMITED);

		public var pipeId:flash.utils.ByteArray;

		/**
		 *  @private
		 */
		public static const TABLE_ID:FieldDescriptor$TYPE_UINT64 = new FieldDescriptor$TYPE_UINT64("protobuf.MATCH_RECORD_MESSAGE.table_id", "tableId", (9 << 3) | com.netease.protobuf.WireType.VARINT);

		public var tableId:UInt64;

		/**
		 *  @private
		 */
		override used_by_generated_code final function writeToBuffer(output:com.netease.protobuf.WritingBuffer):void {
			com.netease.protobuf.WriteUtils.writeTag(output, com.netease.protobuf.WireType.VARINT, 2);
			com.netease.protobuf.WriteUtils.write$TYPE_UINT32(output, this.tableType);
			com.netease.protobuf.WriteUtils.writeTag(output, com.netease.protobuf.WireType.FIXED_64_BIT, 3);
			com.netease.protobuf.WriteUtils.write$TYPE_DOUBLE(output, this.netWinLoss);
			if (hasRake) {
				com.netease.protobuf.WriteUtils.writeTag(output, com.netease.protobuf.WireType.FIXED_64_BIT, 4);
				com.netease.protobuf.WriteUtils.write$TYPE_DOUBLE(output, rake$field);
			}
			if (hasMinBlinds) {
				com.netease.protobuf.WriteUtils.writeTag(output, com.netease.protobuf.WireType.FIXED_64_BIT, 5);
				com.netease.protobuf.WriteUtils.write$TYPE_DOUBLE(output, min_blinds$field);
			}
			if (hasMaxBlinds) {
				com.netease.protobuf.WriteUtils.writeTag(output, com.netease.protobuf.WireType.FIXED_64_BIT, 6);
				com.netease.protobuf.WriteUtils.write$TYPE_DOUBLE(output, max_blinds$field);
			}
			com.netease.protobuf.WriteUtils.writeTag(output, com.netease.protobuf.WireType.VARINT, 7);
			com.netease.protobuf.WriteUtils.write$TYPE_UINT32(output, this.time);
			com.netease.protobuf.WriteUtils.writeTag(output, com.netease.protobuf.WireType.LENGTH_DELIMITED, 8);
			com.netease.protobuf.WriteUtils.write$TYPE_BYTES(output, this.pipeId);
			com.netease.protobuf.WriteUtils.writeTag(output, com.netease.protobuf.WireType.VARINT, 9);
			com.netease.protobuf.WriteUtils.write$TYPE_UINT64(output, this.tableId);
			for (var fieldKey:* in this) {
				super.writeUnknown(output, fieldKey);
			}
		}

		/**
		 *  @private
		 */
		override used_by_generated_code final function readFromSlice(input:flash.utils.IDataInput, bytesAfterSlice:uint):void {
			var table_type$count:uint = 0;
			var net_win_loss$count:uint = 0;
			var rake$count:uint = 0;
			var min_blinds$count:uint = 0;
			var max_blinds$count:uint = 0;
			var time$count:uint = 0;
			var pipe_id$count:uint = 0;
			var table_id$count:uint = 0;
			while (input.bytesAvailable > bytesAfterSlice) {
				var tag:uint = com.netease.protobuf.ReadUtils.read$TYPE_UINT32(input);
				switch (tag >> 3) {
				case 2:
					if (table_type$count != 0) {
						throw new flash.errors.IOError('Bad data format: MATCH_RECORD_MESSAGE.tableType cannot be set twice.');
					}
					++table_type$count;
					this.tableType = com.netease.protobuf.ReadUtils.read$TYPE_UINT32(input);
					break;
				case 3:
					if (net_win_loss$count != 0) {
						throw new flash.errors.IOError('Bad data format: MATCH_RECORD_MESSAGE.netWinLoss cannot be set twice.');
					}
					++net_win_loss$count;
					this.netWinLoss = com.netease.protobuf.ReadUtils.read$TYPE_DOUBLE(input);
					break;
				case 4:
					if (rake$count != 0) {
						throw new flash.errors.IOError('Bad data format: MATCH_RECORD_MESSAGE.rake cannot be set twice.');
					}
					++rake$count;
					this.rake = com.netease.protobuf.ReadUtils.read$TYPE_DOUBLE(input);
					break;
				case 5:
					if (min_blinds$count != 0) {
						throw new flash.errors.IOError('Bad data format: MATCH_RECORD_MESSAGE.minBlinds cannot be set twice.');
					}
					++min_blinds$count;
					this.minBlinds = com.netease.protobuf.ReadUtils.read$TYPE_DOUBLE(input);
					break;
				case 6:
					if (max_blinds$count != 0) {
						throw new flash.errors.IOError('Bad data format: MATCH_RECORD_MESSAGE.maxBlinds cannot be set twice.');
					}
					++max_blinds$count;
					this.maxBlinds = com.netease.protobuf.ReadUtils.read$TYPE_DOUBLE(input);
					break;
				case 7:
					if (time$count != 0) {
						throw new flash.errors.IOError('Bad data format: MATCH_RECORD_MESSAGE.time cannot be set twice.');
					}
					++time$count;
					this.time = com.netease.protobuf.ReadUtils.read$TYPE_UINT32(input);
					break;
				case 8:
					if (pipe_id$count != 0) {
						throw new flash.errors.IOError('Bad data format: MATCH_RECORD_MESSAGE.pipeId cannot be set twice.');
					}
					++pipe_id$count;
					this.pipeId = com.netease.protobuf.ReadUtils.read$TYPE_BYTES(input);
					break;
				case 9:
					if (table_id$count != 0) {
						throw new flash.errors.IOError('Bad data format: MATCH_RECORD_MESSAGE.tableId cannot be set twice.');
					}
					++table_id$count;
					this.tableId = com.netease.protobuf.ReadUtils.read$TYPE_UINT64(input);
					break;
				default:
					super.readUnknown(input, tag);
					break;
				}
			}
		}

	}
}
